package com.pzl.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * Created by zl.peng on 2017/6/9 10:32.
 */

public class MD5Util {


    /**
     * @param key
     * @return 16进制字符串 加密传递过来的字符串信息
     */
    public static String generateMD5(String key) {
        try {
            // 得到MD5加密的对象
            final MessageDigest mDigest = MessageDigest.getInstance("MD5");
            // 使用update方法向mDigest传送数据
            mDigest.update(key.getBytes());
            // 计算摘要，生成散列码，返回结果二进制数组
            byte[] bytes = mDigest.digest();
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < bytes.length; i++) {
                // 将加密后的字节数组转换为16进制的字符串
                // （(0xFF & bytes[i])）先将数据进行与运算，0XFF表示整数，意思是先将byt转化为整数，防止计算错误
                String hex = Integer.toHexString(0xFF & bytes[i]);
                // 16进制每两个字符代表一个字节，为了保证为16进制，当不足两位时前面加0
                if (hex.length() == 1) {
                    sb.append('0');
                }
                sb.append(hex);
            }
            return sb.toString();
        } catch (NoSuchAlgorithmException e) {
            return String.valueOf(key.hashCode());
        }
    }


}
